package cl.portal.escolares.action;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.ServletActionContext;

import cl.portal.escolares.DAO.DAOApoderado;
import cl.portal.escolares.DAO.DAOColegio;
import cl.portal.escolares.DAO.DAOCurso;
import cl.portal.escolares.DAO.DAOFurgon;
import cl.portal.escolares.DAO.DAOUsuario;
import cl.portal.escolares.domain.Alumno;
import cl.portal.escolares.domain.Apoderado;
import cl.portal.escolares.domain.Colegio;
import cl.portal.escolares.domain.Curso;
import cl.portal.escolares.domain.Furgon;
import cl.portal.escolares.domain.Usuario;

import com.opensymphony.xwork2.ActionSupport;

public class AlumnoAddAction extends ActionSupport {
	private static final long serialVersionUID = 1L;
	private static Log _log = LogFactory.getLog(AlumnoEditAction.class);

	private Usuario usuario;
	private Long usuarioId;
	private Apoderado apoderado;
	private Long apoderadoId;
	private Alumno alumno;
	private Long alumnoId;
	private List<Alumno> alumnos;
	private String pagosPendientes;
	private String pagosRealizados;
	private List<Furgon> furgones;
	private List<Colegio> colegios;
	private List<Curso> cursos;

	public String execute() throws Exception {

		try {
			HttpServletRequest request = ServletActionContext.getRequest();

			Long apoderadoId = request.getParameter("apoderadoId") != null ? Long
					.valueOf(request.getParameter("apoderadoId")) : 0L;
			Long usuarioId = request.getParameter("usuarioId") != null ? Long
					.valueOf(request.getParameter("usuarioId")) : 0L;
			if (apoderadoId != null && apoderadoId > 0)
				setApoderadoId(apoderadoId);
			if (usuarioId != null && usuarioId > 0)
				setUsuarioId(usuarioId);
			_log.info("getUsuarioId()" + getUsuarioId());
			_log.info("getApoderadoId()" + getApoderadoId());
			setApoderado(DAOApoderado.get(getApoderadoId()));
			setUsuario(DAOUsuario.get(getUsuarioId()));

			setFurgones(DAOFurgon.list(usuario.getUsuarioId(), null, true));
			setColegios(DAOColegio.list(true));
			setCursos(new ArrayList<Curso>());

			return "success";
		} catch (Exception e) {
			_log.error(e);
			addActionError(getText("error.login"));
			return "error";
		}
	}

	public static Log get_log() {
		return _log;
	}

	public static void set_log(Log _log) {
		AlumnoAddAction._log = _log;
	}

	public Alumno getAlumno() {
		return alumno;
	}

	public void setAlumno(Alumno alumno) {
		this.alumno = alumno;
	}

	public Long getAlumnoId() {
		return alumnoId;
	}

	public void setAlumnoId(Long alumnoId) {
		this.alumnoId = alumnoId;
	}

	public List<Colegio> getColegios() {
		return colegios;
	}

	public void setColegios(List<Colegio> colegios) {
		this.colegios = colegios;
	}

	public List<Curso> getCursos() {
		return cursos;
	}

	public void setCursos(List<Curso> cursos) {
		this.cursos = cursos;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public List<Alumno> getAlumnos() {
		return alumnos;
	}

	public void setAlumnos(List<Alumno> alumnos) {
		this.alumnos = alumnos;
	}

	public Apoderado getApoderado() {
		return apoderado;
	}

	public void setApoderado(Apoderado apoderado) {
		this.apoderado = apoderado;
	}

	public Long getApoderadoId() {
		return apoderadoId;
	}

	public void setApoderadoId(Long apoderadoId) {
		this.apoderadoId = apoderadoId;
	}

	public String getPagosPendientes() {
		return pagosPendientes;
	}

	public void setPagosPendientes(String pagosPendientes) {
		this.pagosPendientes = pagosPendientes;
	}

	public String getPagosRealizados() {
		return pagosRealizados;
	}

	public void setPagosRealizados(String pagosRealizados) {
		this.pagosRealizados = pagosRealizados;
	}

	public List<Furgon> getFurgones() {
		return furgones;
	}

	public void setFurgones(List<Furgon> furgones) {
		this.furgones = furgones;
	}

	public Long getUsuarioId() {
		return usuarioId;
	}

	public void setUsuarioId(Long usuarioId) {
		this.usuarioId = usuarioId;
	}

}
